package com.facade;

import java.io.Serializable;
import java.util.List;

import com.dao.ClienteDao;
import com.model.Cliente;

public class ClienteFacade implements Serializable {
	private static final long serialVersionUID = 1L;
	
	private ClienteDao clienteDao = new ClienteDao();

	public void createCliente(Cliente cliente) {
		clienteDao.beginTransaction();
		clienteDao.save(cliente);
		clienteDao.commitAndCloseTransaction();
	}

//	public void updateCliente(Cliente cliente) {
//		clienteDao.beginTransaction();
//		Cliente persistedCliente = clienteDao.find(cliente.getId());
//		persistedCliente.setName(cliente.getName());
//		persistedCliente.setAge(cliente.getAge());
//		clienteDao.commitAndCloseTransaction();
//	}
	
	public void deleteCliente(Cliente cliente){
		clienteDao.beginTransaction();
		Cliente persistedClienteWithIdOnly = clienteDao.findReferenceOnly(cliente.getIdCliente());
		clienteDao.delete(persistedClienteWithIdOnly);
		clienteDao.commitAndCloseTransaction();
		
	}

	public Cliente findCliente(int clienteId) {
		clienteDao.beginTransaction();
		Cliente cliente = clienteDao.find(clienteId);
		clienteDao.closeTransaction();
		return cliente;
	}

	public List<Cliente> listAll() {
		clienteDao.beginTransaction();
		List<Cliente> result = clienteDao.findAll();
		clienteDao.closeTransaction();

		return result;
	}

//	public Cliente findClienteWithAllDogs(int clienteId) {
//		clienteDao.beginTransaction();
//		Cliente cliente = clienteDao.findClienteWithAllDogs(clienteId);
//		clienteDao.closeTransaction();
//		return cliente;
//	}
//
//	public void addDogToCliente(int dogId, int clienteId) {
//		clienteDao.beginTransaction();
//		dogDao.joinTransaction();
//		Dog dog = dogDao.find(dogId);
//		Cliente cliente = clienteDao.find(clienteId);
//		cliente.getDogs().add(dog);
//		dog.getCliente().add(cliente);
//		clienteDao.commitAndCloseTransaction();
//	}
//
//	public void removeDogFromCliente(int dogId, int clienteId) {
//		clienteDao.beginTransaction();
//		dogDao.joinTransaction();
//		Dog dog = dogDao.find(dogId);
//		Cliente cliente = clienteDao.find(clienteId);
//		cliente.getDogs().remove(dog);
//		dog.getCliente().remove(cliente);
//		clienteDao.commitAndCloseTransaction();
//	}
}